package com.sgj.filterchain.test3;

/**
 * 责任链模式
 * 将领导需要做的事抽象成类
 * @Author: Guoji Shen
 * @Date: 2021/11/19 10:36
 */
public abstract class LeaderInfo {

    // 当前领导审核的金额
    public int auditMoney;

    // 当前领导的上级领导
    public LeaderInfo superiorLeader;


    // 设置当前领导能审批的额度
    public abstract void setCurrentMoney(int money);

    // 当前领导收到申请后处理的事情
    public abstract void handler(ApplyInfo applyInfo);

    // 设置当前领导的上一级领导
    public abstract void setSuperiorLeader(LeaderInfo superiorLeader);

    // 执行审批流程
    public void dealInfo(ApplyInfo applyInfo) {
        if (applyInfo.money <= auditMoney) {
            handler(applyInfo);
        } else {
            superiorLeader.dealInfo(applyInfo);
        }
    }
}